package cn.leida.ruoyi.framework.jpa.config;

import cn.hutool.core.util.StrUtil;
import cn.leida.common.sql.util.SqliteDBUtil;
import jakarta.annotation.PostConstruct;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author lei
 */
@Data
@Component
public class LeidaJPAConfig {

    /**
     * 数据库链接
     */
    @Value("${spring.datasource.druid.master.url}")
    private String jdbcUrl;

    /**
     * 是否是sqlite数据库
     */
    public boolean sqlite() {
        return SqliteDBUtil.sqlite(jdbcUrl());
    }

    /**
     * 是否是mysql数据库
     */
    public boolean mysql() {
        return SqliteDBUtil.mysql(jdbcUrl());
    }

    /**
     * 数据库url配置: 主要用于sqlite数据库创建和初始化, 以及清理数据
     */
    public String jdbcUrl() {
        return StrUtil.trim(jdbcUrl);
    }

    /**
     * 创建sqlite数据库文件
     */
    public void initSqliteFile() {
        if (sqlite()) {
            SqliteDBUtil.initSqliteFile(jdbcUrl);
        }
    }

    /**
     * 压缩DB文件大小: 彻底清除delete语句执行后的数据
     */
    public void truncateSqlite() {
        if (sqlite()) {
            SqliteDBUtil.truncateSqlite(jdbcUrl);
        }
    }
    /**
     * 启动打印文档信息
     */
    @PostConstruct
    public void printUrl() {
        System.out.println(this.getClass().getSimpleName() + " : " + this);
        System.out.println("mysql: " + this.mysql());
    }

}